/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package RDA;

import java.util.ArrayList;
import javax.swing.Timer;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;

/**
 *
 * @author wida46984148
 */
public class ElementosJuego {

    Timer timer;
    NaveBase naveW = null;
    ArrayList<NaveEnemigaBase> arrayNaveBaseE = new ArrayList<NaveEnemigaBase>();
    ArrayList<Disparo> arrayDisparo = new ArrayList<Disparo>();
    Choques cq = new Choques();
    //Shocks sk = new Shocks();
    int c = 123;
    NaveBase naveBase;

    public void posicionaUnitatAmiga(float x, float y, NaveBase nb) {
        nb.posicion(x, y);
        naveW = nb;
    }

    public void posicionaUnitatEnemiga(String nbE)  {
        try {
            if(!(nbE.equals("descanso"))){
                naveBase = FabricaNaves.navesEnemigas(nbE);
                naveBase.posicion(naveBase.x, naveBase.y);
                arrayNaveBaseE.add((NaveEnemigaBase) naveBase);
            }
        } catch (Exception z) {
            System.err.println(z);
        }
    }

    public void posicionaDisparo(float x, float y, Disparo d) {
        d.posicion(x, y);
        arrayDisparo.add(d);
    }

    public void dibujaElemenos(Graphics g, GameContainer gc) {
        try {
            if (naveW != null) {
                    naveW.render(gc, g);
                }
            for (Disparo n : arrayDisparo) {
                if (n != null) {
                    n.render(gc, g);
                }
            }
            for (NaveEnemigaBase n : arrayNaveBaseE) {
                if (n != null) {
                    n.render(gc, g);
                }
            }

        } catch (Exception e) {
        }
    }

    private void updateElementos(int delta) {
        try {
            for (Disparo n : arrayDisparo) {
                if (n != null) {
                    n.update(delta);
                }
            }
            for (NaveEnemigaBase n : arrayNaveBaseE) {
                if (n != null) {
                    n.update(delta);
                }
            }

        } catch (Exception e) {
        }
    }

    public void update(int delta) {
        try {

            updateElementos(delta);
            for (NaveEnemigaBase n : arrayNaveBaseE) {
                //sk.shocksControl(n.arrayDisparo, arrayNaveBaseE, naveW, arrayDisparo);
                cq.controlDeChoques(arrayDisparo, arrayNaveBaseE, naveW, arrayDisparo);
            }
        } catch (Exception e) {
        }
    }
}
